@import '@bifrostui/styles/mixins/index.less';

.bui-city-selector {
  --select-item-width: var(--bui-city-selector-item-width, 111px);
  --select-item-height: var(--bui-city-selector-item-height, 36px);
  --select-item-border-radius: var(
    --bui-city-selector-item-border-radius,
    20px
  );
  --select-item-margin: var(--bui-city-selector-item-margin, 4.5px 0 4.5px 9px);
  --title-height: var(--bui-city-selector-title-height, 45px);
  --title-line-height: var(--bui-city-selector-title-line-height, 45px);
  --btn-close-size: var(--bui-city-selector-btn-close-size, 45px);
  --btn-close-font-size: var(--bui-city-selector-btn-close-font-size, 20px);
  --container-with-title-height: var(
    --bui-city-selector-container-with-title-height,
    calc(100% - var(--title-height))
  );
  --city-container-min-height: var(
    --bui-city-selector-city-container-min-height,
    500px
  );
  --select-city-buttons-padding: var(
    --bui-city-selector-select-city-buttons-padding,
    7.5px 0 0 3px
  );
  --select-city-title-line-height: var(
    --bui-city-selector-select-city-title-line-height,
    15px
  );
  --list-item-height: var(--bui-city-selector-list-item-height, 45px);
  --city-index-has-title-top: var(
    --bui-city-selector-city-index-has-title-top,
    calc(50% + var(--title-height) / 2)
  );
  --index-item-height: var(--bui-city-selector-index-item-height, 20px);
  font-family: var(--bui-font-family);
  height: 100%;
  position: relative;

  &-title {
    width: 100%;
    height: var(--title-height);
    color: var(--bui-color-fg-default);
    font-size: var(--bui-title-size-3);
    line-height: var(--title-line-height);
    text-align: center;
    position: sticky;
    top: 0;
    z-index: 1004;
    border-bottom: solid 1px var(--bui-color-border-default);
    background-color: var(--bui-color-bg-view);
  }

  &-btn-close {
    position: absolute;
    top: 0;
    right: 0;
    width: var(--btn-close-size);
    height: var(--btn-close-size);
    color: var(--bui-color-fg-muted);
    text-align: center;
    font-size: var(--btn-close-font-size);
  }

  &-scroll-view-container {
    height: 100%;

    &.container-has-title {
      height: var(--container-with-title-height);
    }
  }

  &-all-city {
    min-height: var(--city-container-min-height);
    font-size: var(--bui-text-size-2);
    width: 100%;
    background: var(--bui-color-bg-view);
    align-self: flex-start;

    .select-city-buttons {
      display: flex;
      flex-flow: wrap;
      padding: var(--select-city-buttons-padding);
    }

    .select-city-title {
      font-size: var(--bui-title-size-4);
      line-height: var(--select-city-title-line-height);
      font-weight: var(--bui-font-weight-bold);
      padding-left: var(--bui-spacing-lg);
      padding-top: var(--bui-spacing-md);
    }
  }

  &-list {
    padding-left: var(--bui-spacing-lg);
    list-style-type: none;
  }

  &-list-item {
    height: var(--list-item-height);
    font-size: var(--bui-title-size-4);
    display: flex;
    align-items: center;

    &:not(:last-child) {
      border-bottom: 0.5px solid var(--bui-color-border-default);
    }
  }

  &-index-container {
    z-index: 1001;
    position: absolute;
    white-space: nowrap;
    right: 0;
    top: 50%;
    width: 40px;
    will-change: transform;
    // transform: translate(100%, -50%);
    transform: translate(0, -50%);
    transition:
      opacity 0.2s ease-out,
      transform 0.2s ease-out;

    &.left-in {
      opacity: 1;
      transform: translate(0, -50%);
    }

    &.city-index-has-title {
      top: var(--city-index-has-title-top);
    }

    ul {
      margin: 0;
      padding: 0;
      float: left;
      width: 100%;
      touch-action: none;
    }

    li {
      list-style: none;
      height: var(--index-item-height);
      text-align: center;
      font-size: var(--bui-text-size-3);
      color: var(--bui-color-info, --bui-color-info);
      display: flex;
      align-items: center;
      justify-content: center;
    }
  }
}
